一般安全管理任務包含了日誌回顧 (Log Reviews)、帳號管理回顧 (Account Management Reviews)、備份驗證 (Backup Verification) 與關鍵績效與風險指標 (Key Performance and Risk Indicators),這幾部分我們在安全營運章節會有更多的展開。
今天我想回到更多團隊工作與個人管理的心法上,因為若是要讓安全管理任務落實在生活的每一天,需要的是每位測試人員積極地管理自己的時間和工作,同時服務於團隊,提供有效的測試服務。
測試是一個漫長而低調的工作,它同時具有很高的重複性和偏遠性。在漫長的工作人生中,是什麼支持著我們將其作為終生職志,在沒有人監督著我們的時候仍每日前行呢?長長久久的力量,是其中蘊藏的價值與內涵,我叫它「內在價值」。
價值與價格是相對的概念,市場有形可捉摸的叫「價格」,它通常被人所羨慕,它看得到、容易量化;價值是一個事物隱而未現的寶藏,當我們發現它時便會瘋狂買進的東西。市場有一個法則,就是價值與價格終將平衡;價值高估的會降價,價值低估的會漲價。事實上,安總相信這個法則,相信市場雖然不理性但卻是公平的,而時間是價值投資者的好朋友,是投機者的敵人。
估算工作所需時間之要點:
時間管理本質上是任務管理,也就是注意力管理。利用任務清單記錄所有工作項,且能夠適應動態變化的測試任務,以及動態地安排優先順序。周循環是敏捷程式設計的基本實踐之一。週計畫可以幫助您維護一個時間表,看出一年 52 週的的專案動態、專案重疊性,及未來資源分配。
專注是高效率工作的基礎。不論是「時間盒」還是「蕃茄鐘」,其核心都是劃出一段時間做一件事情,在「與世隔絕」的狀態中,盡全力工作。
關於測試品質的度量與分析 (Mearsure & Analysis),我們會放在月報中。「檔案複雜度」和「測試覆蓋率」是很好的度量方法。檔案複雜度 = 檔案中分支與循環關鍵字的個數 / (檔案的行數 + 1)。以下是一個簡單的 PowerShell 腳本,用以分析 C# 檔案的行數和程式複雜度:
$root = Get-Location
"Folder'tFile'tLineCount'tComplexity"
Get-ChildItem *.cs -Recurse | %{
$folderName = $_.DirectoryName.Substring($root.Path.Length);
$lines = Get-Content $_.FullName
$lineCount = $lines.Length
$opCount = ($lines | foreach { $_.split() } |
where { $_ -in ('if', 'case', 'for', 'foreach', 'while') }).Length
$complexity = $opCount / ($lineCount - 1)
"$folderName't$($_.Name)'t$lineCount't$complexity"
}
度量的目的是為專案決策提供資訊,是為了能提出修正方案,為往後產出更合理的行動。例如,「程式覆蓋率」的本質,乃是對測試的回饋,不是要證明測試的充分性,而是要發現測試的遺漏,從而補充測試案例,以發現隱藏的缺陷。所以,程式覆蓋率是一種尋找缺陷的技術,是提高測試的手段,不是測試的目的。
月報製作所需要的數據與資訊,在平時週報時就有累積,頂多花個兩小時便總結完成,而能夠對下個月的執行策略產生指導性的作用和洞察。所以我們說:「我們應該在專案之初就分析程式覆蓋率,並一直持續到專案結束。」
執行的過程中,我們會發想一些大計畫,我們會放到戰略地圖中。戰略地圖、領先指標進度之類的總結,我們會放在年報中呈現。倒不如說,年報就是 12 個月報的累積,所以當 12 月的月報完成時,該年度的年報也就完成了。年報可以起到「總計畫」對齊的作用,讓您目前的工作在長遠來看有意義,知道座落在職涯發展中的哪一個階段。
兩年前我的其中一個事業頭竟然臨時出了一題,請安總在整個事業單位的週會上,講解 GTD 管理方法。我當然就硬著頭皮上啦。
時間觀《Getting Things Done》